package main

import (
	"fmt"
	"sync"
	"time"
)

type Config struct {
	Timeout time.Duration
}

var (
	config Config
	once   sync.Once
)

func loadConfig() {
	// 模拟加载配置文件的操作
	time.Sleep(1 * time.Second)
	config = Config{Timeout: 10 * time.Second}
}

func getConfig() Config {
	once.Do(loadConfig)
	return config
}

func main() {
	// 在多个 Goroutine 中使用
	timeout := getConfig().Timeout
	fmt.Println(timeout)
}
